package com.ktgj.customer.service;

import java.util.List;
import java.util.Map;

import com.ktgj.customer.domain.Itinerary;
import com.ktgj.customer.domain.vo.ItineraryVo;
import com.ktgj.flight.api.domain.FightStopReqVoApi;
import com.ktgj.flight.api.domain.FightStopResVoApi;
import com.ktgj.flight.api.domain.FlightResponseVoApi;
import com.ktgj.flight.api.domain.MoFlightSearchRequestApi;
import org.apache.ibatis.annotations.Param;

/**
 * 行程定制Service接口
 * 
 * @author ruoyi
 * @date 2021-09-01
 */
public interface IItineraryService 
{
    /**
     * 查询行程定制
     * 
     * @param itinerary 行程定制ID
     * @return 行程定制
     */
    public Itinerary selectItineraryById(Long itinerary);

    /**
     * 查询行程定制列表
     * 
     * @param itinerary 行程定制
     * @return 行程定制集合
     */
    public List<Itinerary> selectItineraryList(Itinerary itinerary);

    /**
     * 新增行程定制
     * 
     * @param itinerary 行程定制
     * @return 结果
     */
    public int insertItinerary(Itinerary itinerary);

    /**
     * 修改行程定制
     * 
     * @param itinerary 行程定制
     * @return 结果
     */
    public int updateItinerary(Itinerary itinerary);

    /**
     * 批量删除行程定制
     * 
     * @param itinerarys 需要删除的行程定制ID
     * @return 结果
     */
    public int deleteItineraryByIds(Long[] itinerarys);

    /**
     * 删除行程定制信息
     * 
     * @param itinerary 行程定制ID
     * @return 结果
     */
    public int deleteItineraryById(Long itinerary);

    /**
     * 行程定制多对多
     * @param itinerary
     * @return
     */
    public List<Itinerary> selectItineraryItineraryOrder(@Param("itinerary") Long itinerary);

    /**
     * 评价中心
     * */
    public List<ItineraryVo> selectItineraryByCustomerId(Long customerId, String evaluation);

    /**
     * 评价行程
     * */
    public int updateItineraryByItinerary(ItineraryVo itineraryVo, Long customerId);

    /**
     * 查看评价
     * */
    public ItineraryVo selectItineraryByitinerary(Long itineraryCustomizeId, Long customerId);

    /**
     * 删除评价
     * */
    public int updateItineraryByitinerary(Long itinerary);

    /**
     * 定制行程-单程
     * @param token
     * @return
     */
    public Map<String, Object> queryItineraryByCustomerId(String token);

    /**
     * 查看行程
     * @param customerId
     * @param itinerary
     * @return
     */
    public Map<String, Object> queryItineraryByCustomerIds(Long customerId, Long itinerary);

    /**
     * 行程-历史行程
     * @param token
     * @param customerId
     * @return
     */
    public Map<String, Object> queryHistoryIyinerary(String token, Long customerId);

    public List<FlightResponseVoApi> queryFlightList(MoFlightSearchRequestApi request);

    public FightStopResVoApi getFightInfoByAirCodeAndDate(FightStopReqVoApi vo);

    /**
     * 新建行程
     * */
    public Long addItinerary(Itinerary itinerary) throws Exception;
}
